package hot100.h0911;

/**
 * @author 不知名帅哥
 * @version 1.0
 * @description 乘积最大的子数组
 * @date 2024/9/11 23:56
 */
public class MaxProductSubArray {
    public static void main(String[] args) {
        int[] nums = {2, 3, -2, 4};
        System.out.println(maxProduct(nums));
    }

    public static int maxProduct(int[] nums) {
        int n = nums.length;
        int maxProduct=nums[0];
        int minProduct=nums[0];

        int res=nums[0];
        for (int i = 1; i < n; i++) {
            if (nums[i]<0){
                int temp=maxProduct;
                maxProduct=minProduct;
                minProduct=temp;
            }

            maxProduct=Math.max(nums[i], maxProduct*nums[i]);
            minProduct=Math.min(nums[i], minProduct*nums[i]);
            res=Math.max(res,maxProduct);
        }
        return res;
    }
}
